foo: foo.o bar.o
	gcc -o foo foo.o bar.o

foo.o: bar.h foo.c
	gcc -c foo.c

bar.o: bar.h bar.c
	gcc -c bar.c

#分布执行
#1、make foo.o
#2、make bar.o
#3、make foo

# 如果省略了编译目标，make命令会执行第一条编译规则，构建相应的产物。
#$ make
#上面示例中，make后面没有编译目标，所以会执行 makefile 的第一条编译规则，本例是make foo。由于用户期望执行make后得到最终的可执行文件，所以建议总是把最终可执行文件的编译规则，放在 makefile 文件的第一条。makefile 本身对编译规则没有顺序要求。